# 22、(web)请写出以下页面的自动化代码操作（写出代码注释）【30分】
# A:下拉列表
#
# html
# <select>
#   <option>Java</option>
#   <option>C++</option>
#   <option value="Python">Python</option>
#   <option>HTML</option>
#   <option>JavaScript</option>
# </select>
# B:
# 复选框用户名：<input type="text" name="user_name">
# 密码：<input type="password" name="pwd">
#   <input type="checkbox" name="Java">Java
#   <input type="checkbox" name="Python">Python
#   <input type="checkbox" name="C++">C++
#   <input type="checkbox" name="JavaScript">JavaScript
#   <input type="checkbox" name="HTML">HTML

# C:弹窗操作
#
# html
# <body>
# <input type="button" id="prompt" value="prompt 弹窗" onclick="prompt('这是 prompt()弹窗！ ','这是 prompt()弹窗的默认值！ ')">
# </body>
# 要求：
# 请按要求写出以下代码
# 1、下来列表要求循环获取列表内的内容，每个选择项选择后，等待两秒钟。
# 2、复选框循环勾选，然后在勾选 C++HE HTML。后页面等待 10 秒，最后关闭。
# 3、写出 alert 弹窗的处理代码，点击确定，再次点击该弹窗，点击取消。再次点击，输入“以上是我的代码内容！”然后关闭。


from selenium import webdriver
from selenium.webdriver.common.by import By
import time

# 初始化浏览器驱动（需提前下载对应版本的chromedriver）
driver = webdriver.Chrome()

try:
    # 打开测试页面（请替换实际页面URL）
    driver.get("D:\\github\\python\\6_19\\1.html")

    # ===== 1. 下拉列表操作 =====
    dropdown = driver.find_element(By.TAG_NAME, "select")
    options = dropdown.find_elements(By.TAG_NAME, "option")

    for option in options:
        # 选择当前选项
        dropdown.click()
        option.click()

        # 等待2秒
        time.sleep(2)
        print(f"已选择：{option.text}")

    # ===== 2. 复选框操作 =====
    checkboxes = driver.find_elements(By.XPATH, '//input[@type="checkbox"]')

    # 循环勾选所有复选框
    for checkbox in checkboxes:
        if not checkbox.is_selected():
            checkbox.click()
            print(f"已勾选：{checkbox.get_attribute('name')}")
            time.sleep(1)  # 可选：添加短暂等待

    time.sleep(3)
    # 取消勾选
    for checkbox in checkboxes:
        if checkbox.is_selected():
            checkbox.click()
            print(f"已取消勾选：{checkbox.get_attribute('name')}")
            time.sleep(1)
    time.sleep(3)
    # 特别勾选C++和HTML
    cpp_checkbox = driver.find_element(By.NAME, "C++")
    html_checkbox = driver.find_element(By.NAME, "HTML")

    if not cpp_checkbox.is_selected():
        cpp_checkbox.click()
    if not html_checkbox.is_selected():
        html_checkbox.click()

    print("已特别勾选C++和HTML")
    time.sleep(10)  # 等待10秒

    # ===== 3. 弹窗操作 =====
    # 点击触发prompt弹窗
    prompt_btn = driver.find_element(By.ID, "prompt")

    # 第一次点击（确定）
    prompt_btn.click()
    alert = driver.switch_to.alert
    alert.accept()  # 点击确定
    print("已处理第一个弹窗（确定）")
    time.sleep(2)

    # 第二次点击（取消）
    prompt_btn.click()
    alert = driver.switch_to.alert
    alert.dismiss()  # 点击取消
    print("已处理第二个弹窗（取消）")
    time.sleep(2)

    # 第三次点击（输入文本）
    prompt_btn.click()
    alert = driver.switch_to.alert
    alert.send_keys("以上是我的代码内容！")  # 输入文本
    alert.accept()  # 点击确定关闭
    print("已处理第三个弹窗（输入文本并确定）")

finally:
    # 关闭浏览器（建议在finally块中确保执行）
    driver.quit()
